//定制请求的实例

//导入axios  npm install axios
import axios from 'axios';
//定义一个变量,记录公共的前缀  ,  baseURL
//const baseURL = 'http://localhost:8080';
const baseURL = '/api';//标识路径api 表示浏览器所在界面
const instance = axios.create({baseURL})

import { useTokenStore } from '@/stores/token.js';




//添加请求拦截器
instance.interceptors.request.use(
    (config)=>{
        //请求前的回调
        //添加token
        const tokenStore = useTokenStore();
        //判断有没有token
        if(tokenStore.token){
            config.headers.Authorization = tokenStore.token//统一添加请求头
        }
        return config;
    },
    (err)=>{
        //请求错误的回调
        Promise.reject(err)//异步的状态转为失败
    }
)




// import {userRouter} from 'vue-router'
// const router = useRouter();
import {ElMessage} from 'element-plus'
import router from '@/router'
//添加响应拦截器
instance.interceptors.response.use(
    result=>{
        return result.data;
    },
    err=>{
        //判断响应状态码 如果提示401 则证明未登录 提示请登录 并跳转到登陆页面
        if(err.response.status===401){
            ElMessage.error('请先登录')
            //路由跳转到login
            router.push('/login')
        }
        else{
            ElMessage.error('服务异常')
        }
        return Promise.reject(err);//异步的状态转化成失败的状态
    }
)

export default instance;